﻿#ifndef CBASEDEVICE_H
#define CBASEDEVICE_H

#include "CBaseNode.h"
#include "CMeasurePoint.h"
#include <QList>
#include <QStringList>
#include <QWidget>
#include "IDevice.h"
// 设备状态
enum class DeviceStatus {
	enStopped,
	enRunning,
	enFault,
	enOffline
};

class CBaseDevice : public CBaseNode {
public:
	CBaseDevice(const QString & name, const QString & sId, const QString & sConfig,CBaseNode * parent);
	virtual ~CBaseDevice();

	// 启动、停止、更新数据（来自基类）
	void start() override;
	void stop() override;
	void updateData() override;
	void init()override;
	//释放节点、设备或者测点
	void disposeNode(CBaseNode* pNode)override;
	//删除设备
	void deleteNode()override;
	// 设备控制
	virtual bool control(const QString& command, const QVariant& param);
	void setDevice(IDevice *pDevice);
	IDevice * getDevice();
	QString getDllName(); //获取驱动名称
	int getDeviceType();   //获取设备类型
private:
	IDevice *m_pDevice;
	QString m_sDllName;     //dll名称
	QString m_sDeviceType;  //设备的类型 如南电机器人  滨海机器人等
	QMap<QString, CMeasurePoint *>m_mapInputPoint;  //设备需要使用的输入测点
};

#endif // CBASEDEVICE_H
